package szxx;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * Created by tony on 2017/6/30.
 */
public class GenerateCards {

    public static List<Byte> getAllCards() {
        List<Byte> allCards = new ArrayList<>();

        // 生成万
        for (int i = 1; i < 10; i++) {
            byte a = (byte) (i & 0xff);
            allCards.add(a);
            allCards.add(a);
            allCards.add(a);
            allCards.add(a);
        }

        // 生成条
        for (int i = 17; i < 26; i++) {
            byte a = (byte) (i & 0xff);
            allCards.add(a);
            allCards.add(a);
            allCards.add(a);
            allCards.add(a);
        }

        // 生成筒
        for (int i = 33; i < 42; i++) {
            byte a = (byte) (i & 0xff);
            allCards.add(a);
            allCards.add(a);
            allCards.add(a);
            allCards.add(a);
        }

        // 生成风
        /*for (int i = 49; i < 56; i++) {
            byte a = (byte)(i & 0xff);
            allCards.add(a);
            allCards.add(a);
            allCards.add(a);
            allCards.add(a);
        }*/

        // 生成花
        /*for (int i = 65; i < 73; i++){
            byte a = (byte)(i & 0xff);
            allCards.add(a);
            allCards.add(a);
            allCards.add(a);
            allCards.add(a);
        }*/

        return allCards;
    }

    public static void getCards() {
        List<Byte> allCards = GenerateCards.getAllCards();

        List<Byte> firstCards = new ArrayList<>();
        firstCards.add((byte) 0x13);
        firstCards.add((byte) 0x13);
        firstCards.add((byte) 0x08);
        firstCards.add((byte) 0x08);
        firstCards.add((byte) 0x06);
        firstCards.add((byte) 0x06);
        firstCards.add((byte) 0x06);
        firstCards.add((byte) 0x11);
        firstCards.add((byte) 0x11);
        firstCards.add((byte) 0x14);
        firstCards.add((byte) 0x25);
        firstCards.add((byte) 0x26);
        firstCards.add((byte) 0x36);

        List<Byte> secondCards = new ArrayList<>();
        /*
        firstCards.add((byte)0x04);
        firstCards.add((byte)0x04);
        firstCards.add((byte)0x04);
        firstCards.add((byte)0x12);
        firstCards.add((byte)0x12);
        firstCards.add((byte)0x27);
        firstCards.add((byte)0x27);
        firstCards.add((byte)0x28);
        firstCards.add((byte)0x29);
        firstCards.add((byte)0x37);
        firstCards.add((byte)0x37);
        firstCards.add((byte)0x37);*/

        List<Byte> thirdCards = new ArrayList<>();
        /*firstCards.add((byte)0x04);
        firstCards.add((byte)0x04);
        firstCards.add((byte)0x04);
        firstCards.add((byte)0x12);
        firstCards.add((byte)0x12);
        firstCards.add((byte)0x27);
        firstCards.add((byte)0x27);
        firstCards.add((byte)0x28);
        firstCards.add((byte)0x29);
        firstCards.add((byte)0x37);
        firstCards.add((byte)0x37);
        firstCards.add((byte)0x37);*/

        List<Byte> forthCards = new ArrayList<>();
        /*
        firstCards.add((byte)0x04);
        firstCards.add((byte)0x04);
        firstCards.add((byte)0x04);
        firstCards.add((byte)0x12);
        firstCards.add((byte)0x12);
        firstCards.add((byte)0x27);
        firstCards.add((byte)0x27);
        firstCards.add((byte)0x28);
        firstCards.add((byte)0x29);
        firstCards.add((byte)0x37);
        firstCards.add((byte)0x37);
        firstCards.add((byte)0x37);*/

        for (Byte card : firstCards) {
            if (card < 10) {
                System.out.print("0x0" + Integer.toHexString(card) + ",");
            } else {
                System.out.print("0x" + Integer.toHexString(card) + ",");
            }
            allCards.remove(card);
        }
        Collections.shuffle(allCards);
        for (int i = 0; i < 13; i++) {
            secondCards.add(allCards.remove(0));
        }
        for (int i = 0; i < 13; i++) {
            thirdCards.add(allCards.remove(0));
        }
        for (int i = 0; i < 13; i++) {
            forthCards.add(allCards.remove(0));
        }
        System.out.println();
        for (Byte card : secondCards) {
            if (card < 10) {
                System.out.print("0x0" + Integer.toHexString(card) + ",");
            } else {
                System.out.print("0x" + Integer.toHexString(card) + ",");
            }
        }
        System.out.println();
        for (Byte card : thirdCards) {
            if (card < 10) {
                System.out.print("0x0" + Integer.toHexString(card) + ",");
            } else {
                System.out.print("0x" + Integer.toHexString(card) + ",");
            }
        }
        System.out.println();
        for (Byte card : forthCards) {
            if (card < 10) {
                System.out.print("0x0" + Integer.toHexString(card) + ",");
            } else {
                System.out.print("0x" + Integer.toHexString(card) + ",");
            }
        }

    }

    public static void main(String[] args) {
        GenerateCards.getCards();
    }
}
